Configuration serveur¶

2018

Installation Linux¶

Montage du systĂšme de fichiers :

  • / : ro,suid,dev,exec,auto,nouser,async

  • /home : rw,suid,dev,noexec,auto,nouser,async

  • /tmp : rw,suid,dev, noexec,auto,nouser,async

  • /var : rw,suid,dev,noexec,auto,nouser,async

Attention pour le rĂ©pertoire racine, un montage en lecture seule (ro) rend impossible la modification des fichiers. Cela peut ĂȘtre voulu en production, notez que les mises Ă  jour ne seront pas possibles. Pour modifier le montage, il est nĂ©cessaire de modifier le fichier fstab en mode rescue.

Gestion des accÚs root¶

  • Installation de sudo

su
apt install sudo
  • Configuration de sudo, Ă©diter le fichier /etc/sudoers. Par exemple, pour que ‘user’ ait accĂšs Ă  tous les droits root sur le serveur, ajouter la ligne suivante :

user      ALL=(ALL) ALL

Authentification par clé publique/privée¶

Il est recommandĂ© d’avoir une clĂ© publique/privĂ©e unique pour chaque machine et chaque utilisateur. La clĂ© privĂ©e et publique se trouve dans le rĂ©pertoire ~/.ssh/. Depuis OpenSSH version 6.5, il est nĂ©cessaire d’utiliser l’algorithme ed25519.

Génération de la clé ed25519 :

ssh-keygen -o -a 100 -t ed25519 -f ~/.ssh/id_ed25519 -C "john@example.com"

Copier la clé publique dans le fichier ~/.ssh/authorized_keys

Ajouter une nouvelle machine à votre fichier ~/.ssh/config pour activer l’authentification automatique.

Host newyork
    HostName 127.0.0.1
    Port 2222
    User jdoe
    IdentityFile ~/.ssh/id_ed25519
    RequestTTY yes
    RemoteCommand tmux -u attach || tmux -u new

Cette configuration active le multiplexage des connexions SSH, permettant Ă  plusieurs sessions vers le mĂȘme hĂŽte de partager une seule connexion rĂ©seau, ce qui accĂ©lĂšre les connexions suivantes et rĂ©duit les demandes d’authentification rĂ©pĂ©tĂ©es.

Host dev-server*
    ControlMaster auto
    ControlPath ~/.ssh/cm-%r@%h:%p
    ControlPersist 10m

Configuration de sshd¶

Éditer le fichier /etc/ssh/sshd_config pour configurer sshd.

  • Interdire l’authentification par mot de passe

# To disable tunneled clear text passwords both PasswordAuthentication and
# ChallengeResponseAuthentication must be set to "no".
PasswordAuthentication no
  • Interdire l’authentification de l’utilisateur root :

PermitRootLogin no
  • DĂ©sactiver les mots de passe vides

PermitEmptyPasswords no

fail2ban¶

apt install fail2ban

Guide de mise en place de WireGuard¶

  1. Installer le paquet WireGuard sur votre systĂšme :

sudo apt install wireguard
  1. Génération des clés

Générer les clés cryptographiques pour chaque machine :

cd /etc/wireguard/
umask 077
wg genkey | tee private.key | wg pubkey > public.key
  1. Configuration du serveur

Créer le fichier /etc/wireguard/wg0.conf sur le serveur

[Interface]
# The server's private key
PrivateKey = <YOUR_SERVER_PRIVATE_KEY>
# Internal VPN IP address for the server
Address = 10.0.0.1/24
# Port to listen on
ListenPort = 51820

# Optional: NAT rules for internet access (ensure net.ipv4.ip_forward=1 is enabled)
# Replace 'eth0' with your actual public network interface
PostUp = iptables -t nat -I POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE
PostDown = iptables -t nat -D POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE

# Peer configuration (Repeat this block for each client)
[Peer]
# The client's public key
PublicKey = <CLIENT_PUBLIC_KEY>
# Authorized internal IP for this client
AllowedIPs = 10.0.0.2/32
  1. Configuration du client

Sur le client (par exemple, un PC Linux), créer /etc/wireguard/wg0.conf :

[Interface]
# The client's private key
PrivateKey = <CONTENU_DE_LA_PRIVATEKEY_CLIENT>
Address = 10.0.0.2/24

[Peer]
# The server's public key
PublicKey = <CONTENU_DE_LA_PUBLICKEY_SERVEUR>
# Your server's public IP address and port
Endpoint = <IP_PUBLIQUE_SERVEUR>:51820
# 0.0.0.0/0 routes all traffic through the VPN
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
  1. Gestion de l’interface

DĂ©marrer l’interface VPN manuellement :

sudo wg-quick up wg0

Activer le service pour qu’il dĂ©marre automatiquement au dĂ©marrage :

sudo systemctl enable wg-quick@wg0
  1. SSH par-dessus WireGuard

Dépendance de service

Pour s’assurer que SSH ne dĂ©marre qu’aprĂšs que le VPN soit actif, crĂ©er une configuration de surcharge :

sudo systemctl edit ssh

Ajouter ces lignes dans l’éditeur :

[Unit]
After=wg-quick@wg0.service
Wants=wg-quick@wg0.service

Appliquer les changements :

sudo systemctl daemon-reload
  • Restreindre l’accĂšs SSH au VPN

Pour s’assurer que SSH n’est accessible que via l’interface VPN, Ă©diter /etc/ssh/sshd_config sur le serveur et mettre Ă  jour le ListenAddress :

Dans /etc/ssh/sshd_config

ListenAddress 10.0.0.1